home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Power Programmierung
/
Power-Programmierung (Tewi)(1994).iso
/
qtawk
/
screen.exp
< prev
next >
Wrap
Text File
|
1990-04-23
|
4KB
|
147 lines
# QTAwk functions to manipulate display and cursor
# adapted from Article in Computer Language, Vol. 7, No. 1, Jan. 1990
# "Awk of Ages, Best for Me" by MIchael J. Gilchrist
#
# ANSI.SYS device driver for display must be installed for PC/MS-DOS
#
# functions defined:
# cls() -- function to clear screen and home cursor
# cls_sv() -- function to clear screen and leave cursor in current position
# crsr_pos(row,col) -- function to move cursor to specified position
# crsr_up(n) -- function to move cursor up n row(s)
# will not go above top line
# crsr_dn(n) -- function to move cursor down n row(s)
# will not go below bottom line
# crsr_left(n) -- function to move cursor left n column(s)
# will not go beyond left edge
# crsr_right(n) -- function to move cursor right n column(s)
# will not go beyond right edge
# erase_end() -- function to erase to end of current line
# including cursor position
# set_color(attr,fore,back) -- function to set display colors
#
# define some command variables here
BEGIN {
# define standard error file == screen
stderr = "stderr";
stdin = "stdin";
stdout = "stdout";
srand();
fprintf(stderr,"\x01b[s");
fprintf(stderr,"\x01b[=7l");
for ( i = 1 ; i <= 100 ; i++ ) {
crsr_pos(randint(24),randint(79));
set_color(0,randint(7),randint(7));
fprintf(stderr,"\001");
}
fprintf(stderr,"\x01b[=7h");
fprintf(stderr,"\x01b[u");
fprintf(stderr,"<-------------- Exiting QTAwk ------------->");
crsr_pos(24,1);
set_color(1,1,4);
}
# function to clear screen and home cursor
function cls() {
# clear screen and home cursor string
local _cls_ = "\x01b[2J";
fprintf(stderr,_cls_);
}
# function to clear screen and leave cursor in current position
function cls_sv() {
# clear screen and home cursor string
local _cls_ = "\x01b[2J";
# save cursor position
local _crsr_sv_ = "\x01b[s";
# restore cursor position
local _crsr_rs_ = "\x01b[u";
fprintf(stderr,_crsr_sv_ ∩ _cls_ ∩ crsr_rs_);
}
# function to move cursor to specified position
function crsr_pos(row,col) {
# sets cursor position
local _crsr_pos_ = "\x01b[{irow};{icol}f";
local irow = int(row); # insure integer value
local icol = int(col); # insure integer value
fprintf(stderr,replace(_crsr_pos_));
}
# function to move cursor up n row(s) - will not go above top line
function crsr_up(n) {
# move cursor up one row
local _crsr_up_ = "\x01b[{nn}A";
local nn = int(n);
fprintf(stderr,replace(_crsr_up_));
}
# function to move cursor down n row(s) - will not go below bottom line
function crsr_dn(n) {
# move cursor down one row
local _crsr_dn_ = "\x01b[{nn}B";
local nn = int(n);
fprintf(stderr,replace(_crsr_dn_));
}
# function to move cursor left n column(s) - will not go beyond left edge
function crsr_left(n) {
# cursor left n column(s)
local _crsr_left_ = "\x01b[{nn}C";
local nn = int(n);
fprintf(stderr,replace(_crsr_left_));
}
# function to move cursor right n column(s) - will not go beyond right edge
function crsr_right(n) {
# cursor left n column(s)
local _crsr_right_ = "\x01b[{nn}D";
local nn = int(n);
fprintf(stderr,replace(_crsr_right_));
}
# function to erase to end of current line - including cursor position
function erase_end() {
# erase to end of line, including cursor position
local _erase_end_line_ = "\x01b[K";
fprintf(stderr,_erase_end_line_);
}
# function to set display colors
# attr --> sets display attribute
# 0 --> leave attribute as is
# 1 --> high intensity
# 5 --> blink
# fore --> sets foreground color
# back --> sets background color
# colors for both foreground and background are:
# 0 --> Black
# 1 --> Red
# 2 --> Green
# 3 --> Yellow
# 4 --> Blue
# 5 --> Magenta
# 6 --> Cyan
# 7 --> White
function set_color(attr,fore,back) {
local _attr = int(attr) % 10;
local _fore = int(fore) % 8 + 30;
local _back = int(back) % 8 + 40;
# set display color string
local _set_display_color_ = _attr ? "\x01b[{_attr};{_fore};{_back}m" : "\x01b[{_fore};{_back}m";
fprintf(stderr,replace(_set_display_color_));
}
function randint(n) {
return int(n * rand()) + 1;
}